/**
 * 精确判断数据是否是 Object 类型
 * @param {Any} val 要判断的数据
 * @returns {Boolean} true：是；false：不是；
 */
export const isObject = (val) => {
  return Object.prototype.toString.call(val) === '[object Object]' && val !== null && val !== undefined;
}

/**
 * 判断数据是否是 Array 类型
 * @param {Any} val 要判断的数据
 * @returns {Boolean} true：是；false：不是；
 */
export const isArray = (val) => {
  return Object.prototype.toString.call(val) === '[object Array]';
}



/**
 * 判断数据是否是 String 类型
 * @param {Any} val 要判断的数据
 * @returns {Boolean} true：是；false：不是；
 */
export const isString = (val) => {
  return Object.prototype.toString.call(val) === '[object String]';
}

/**
 * 精确判断数据是否是 Date 类型
 * @param {Any} val 要判断的数据
 * @returns {Boolean} true：是；false：不是；
 */
export const isDate = (val) => {
  return Object.prototype.toString.call(val) === '[object Date]';
}

/**
 * 精确判断数据是否是 Function 类型
 * @param {Any} val 要判断的数据
 * @returns {Boolean} true：是；false：不是；
 */
export const isFunction = (val) => {
  return Object.prototype.toString.call(val) === '[object Function]';
}

/**
 * 精确判断数据是否是 Number 类型
 * @param {Any} val 要判断的数据
 * @returns {Boolean} true：是；false：不是；
 */
export const isNumber = (val) => {
  return Object.prototype.toString.call(val) === '[object Number]';
}

/**
 * 精确判断数据是否是 Boolean 类型
 * @param {Any} val 要判断的数据
 * @returns {Boolean} true：是；false：不是；
 */
export const isBoolean = (val) => {
  return Object.prototype.toString.call(val) === '[object Boolean]';
}
